package com.haixiaoke.saas.common.enums;

import lombok.Getter;
import lombok.Setter;

/**
 * 推送条件状态枚举
 *
 * @Author xiaolong
 * @Date 2024-11-11
 **/
@Getter
public enum PushConditionEnum {


    /**
     * 内部消息: 1.工单待接单通知
     */
    CONDITION_TYPE_PENDING("1", "工单待接单通知", "P001"),

    /**
     * 内部消息: 2.工单审核通知
     */
    CONDITION_TYPE_AUDIT("2", "工单审核通知", "P002"),

    /**
     * 内部消息: 3.工单超时处理通知
     */
    CONDITION_TYPE_TIMEOUT("3", "工单超时处理通知", "P003"),

    /**
     * 内部消息: 4.预订成功通知（日租）
     */
    CONDITION_TYPE_RESERVE("4", "预订成功通知（日租）", "P004"),

    /**
     * 内部消息: 5.退租审核通知
     */
    CONDITION_TYPE_LETTING_OUT("5", "退租审核通知", "P005"),

    /**
     * 内部消息: 6.换房申请通知
     */
    CONDITION_TYPE_CHANGE("6", "换房申请通知", "P006"),

    /**
     * 内部消息: 7.续租申请通知
     */
    CONDITION_TYPE_RELET("7", "续租申请通知", "P007"),

    /**
     * 内部消息: 8.转租申请通知
     */
    CONDITION_TYPE_SUBLET("8", "转租申请通知", "P008"),

    /**
     * 内部消息: 9.租客合同待确认通知
     */
    CONDITION_TYPE_TENANT_CONTRACT_NOTARIZE("9", "租客合同待确认通知", "P009"),

    /**
     * 内部消息: 10.租客合同到期通知
     */
    CONDITION_TYPE_TENANT_CONTRACT_EXPIRE("10", "租客合同到期通知", "P010"),


    /**
     * 外部消息: 101.工单接单通知
     */
    CONDITION_TYPE_PENDING_CON("101", "工单接单通知", "P101"),

    /**
     * 外部消息: 102.工单取消通知
     */
    CONDITION_TYPE_CANCEL_CON("102", "工单取消通知", "P102"),

    /**
     * 外部消息: 103.工单超时处理通知
     */
    CONDITION_TYPE_TIMEOUT_CON("103", "工单超时处理通知", "P103"),

    /**
     * 外部消息: 104.预订成功通知
     */
    CONDITION_TYPE_RESERVE_CON("104", "预订成功通知", "P104"),

    /**
     * 外部消息: 105.订单待支付通知
     */
    CONDITION_TYPE_UNPAID_CON("105", "订单待支付通知", "P105"),

    /**
     * 外部消息: 106.租客合同待确认通知
     */
    CONDITION_TYPE_TENANT_CONTRACT_NOTARIZE_CON("106", "租客合同待确认通知", "P106"),

    /**
     * 外部消息: 107.租客合同到期通知
     */
    CONDITION_TYPE_TENANT_CONTRACT_EXPIRE_CON("107", "租客合同到期通知", "P107");

    @Getter
    @Setter
    String value;

    @Getter
    @Setter
    String label;

    @Getter
    @Setter
    String code;



    PushConditionEnum(String value, String label, String code) {
        this.value = value;
        this.label = label;
        this.code = code;
    }

    /**
     * 根据value获取code
     * @param value
     * @return
     */
    public static String getCodeByValue(String value) {
        for (PushConditionEnum status : PushConditionEnum.values()) {
            if (status.getValue().equals(value)) {
                return status.getCode();
            }
        }
        return null;
    }

    /**
     * 根据code获取label
     * @param code
     * @return
     */
     public static String getLabelByCode(String code) {
        for (PushConditionEnum status : PushConditionEnum.values()) {
            if (status.getCode().equals(code)) {
                return status.getLabel();
            }
        }
        return null;
    }

    /**
     * 根据code获取Enum对象
     * @param code
     * @return
     */
    public static PushConditionEnum getEnumByCode(String code) {
        for (PushConditionEnum status : PushConditionEnum.values()) {
            if (status.getCode().equals(code)) {
                return status;
            }
        }
        return null;
    }
}
